package com.benshou.bsoa.dto.feikong.res;

import lombok.Data;

import java.util.List;

/**
 * 响应数据传输对象 (DTO) for 报销单列表查询接口.
 */
@Data
public class ReimbursementResponse{
    private String id; // 消息ID
    private String uuid; // 请求标识
    private String status; // 状态码
    private String message; // 状态码描述
    private int time; // 耗时（毫秒）
    private boolean fail; // 是否失败
    private boolean success; // 是否成功
    private Result result; // 结果集

    @Data
    public static class Result {
        private List<FkBxdAndFymx> fkBxdAndFymxList; // 数据集合

        @Data
        public static class FkBxdAndFymx {
            private Bxdzb bxdzb; // 报销单信息对象
            private List<Fymx> fymxList; // 费用明细列表

            @Data
            public static class Bxdzb {
                private String bxdh; // 报销单号
                private String bxrgh; // 报销人工号
                private String bxrxm; // 报销人姓名
                private String fygsgsbh; // 费用归属公司编号
                private String fygsgsmc; // 费用归属公司名称
                private String cbzxdh; // 成本中心编号
                private String cbzxmc; // 成本中心名称
                private String xmdh; // 项目编号
                private String xmmc; // 项目名称
                private String djzt; // 单据状态
                private String cjsj; // 创建时间
                private String bxsj; // 报销时间
                private String tjsj; // 提交时间
                private String spwcsj; // 审批完成时间
                private String ywlx; // 业务类型编号
                private String ywlxmc; // 业务类型名称
            }

            @Data
            public static class Fymx {

                private String id; // 主键ID
                private String qybh; // 企业编号
                private String frgs; // 法人公司
                private String frgsid; // 法人公司ID
                private String bmid; // 部门ID
                private String dbid; // 大表ID（业务主键）
                private String ygid; // 员工ID

                private String fylx;   // 费用类型编号，例如“200100”表示国内机票
                private String fylxmc; // 费用类型名称，例如“国内机票”

                private String ddlx;   // 订单类型编号
                private String cpbh;   // 产品编号
                private String ywdh;   // 业务单号/订单号
                private String zffs;   // 支付方式（如1表示在线支付）

                private String xfje;     // 消费金额（含税金额）
                private String xfjeWb;   // 消费金额（外币）
                private String yjspje;   // 月结审批金额
                private String bhsje;    // 不含税金额
                private String bhsjeWb;  // 不含税金额（外币）
                private String spbhsje;  // 审批不含税金额

                private String xfsj;     // 消费时间，例如："2025-03-07 15:50:00"

                private String cbzx;     // 成本中心编号
                private String cbzxdh;   // 成本中心代号
                private String cbzxmc;   // 成本中心名称

                private String xm;       // 项目编号
                private String xmdh;     // 项目代号
                private String xmmc;     // 项目名称

                private String fygsbmid; // 费用归属部门ID
                private String fygsgsid; // 费用归属公司ID
                private String bxlx;     // 报销类型编号
                private String bxpch;    // 报销批次号
                private String bxdh;     // 报销单号
                private String bxzt;     // 报销状态（例如：2 表示已审批）
                private String bxje;     // 报销金额
                private String spje;     // 审批金额
                private String dkse;     // 抵扣税额
                private String spdkse;   // 审批抵扣税额
                private String ywlx;     // 业务类型ID
                private String ywlxmc;   // 业务类型名称（如“项目出差（客户承担）”）
                private String ywlxbh;   // 业务类型编号
                private String sjly;     // 数据来源（如：3 表示来自接口导入）

                private String cjr;      // 创建人ID
                private String cjsj;     // 创建时间
                private String zhxgsj;   // 最后修改时间

                private String fygsbmmc; // 费用归属部门名称
                private String fygsgsmc; // 费用归属公司名称
                private String ygxm;     // 员工姓名（如：雷蕾）

                private List<Fyft> fyftList; // 费用分摊列表，每项记录分摊的成本中心/项目金额等

                @Data
                public static class Fyft {
                    private String fyftbl; // 分摊比例
                    private String fyftsqje; // 分摊金额
                }
            }
        }
    }
}